﻿using System;
using System.IO;

namespace Holdem.Interfaces.Configuration
{
    public interface IHoldemIsolatedStorage : IDisposable
    {
        long Quota
        {
            get;
        }

        long AvailableFreeSpace
        {
            get;
        }

        void Remove();

        bool IncreaseQuotaTo(long newQuotaSize);

        void DeleteFile(string file);

        bool FileExists(string path);

        bool DirectoryExists(string path);

        void CreateDirectory(string dir);

        void DeleteDirectory(string dir);

        string[] GetFileNames();

        string[] GetFileNames(string searchPattern);

        string[] GetDirectoryNames();

        string[] GetDirectoryNames(string searchPattern);

        IHoldemIsolatedStorageFileStream OpenFile(string path, FileMode mode);
        IHoldemIsolatedStorageFileStream OpenFile(string path, FileMode mode, FileAccess access);
        IHoldemIsolatedStorageFileStream OpenFile(string path, FileMode mode, FileAccess access, FileShare share);
        IHoldemIsolatedStorageFileStream CreateFile(string path);

        IHoldemIsolatedStorageFile GetUserStoreForApplication();
    }
}
